A middlebox is a network appliance that manipulates internet traffic by optimizing data flow across the network. Middleboxes can be configured as wide area network (“WAN”) optimizers and can be deployed in pairs across two geographically separated locations to optimize data traffic between the two middleboxes. Middleboxes can be connected through a single link or multiple links such as a leased line link and a broadband link. Middleboxes use TCP congestion avoidance algorithms, commonly called “TCP flavors,” to optimize TCP data flows as part of a quality of service (“QoS”) scheme. Common examples of TCP avoidance flavors can include algorithms such as TCP Vegas, TCP Reno, TCP NewReno, TCP Hybla, TCP BIC, and TCP CUBIC, among others. Each TCP congestion avoidance flavor is suited for optimizing data flows originating from or received by particular operating systems, link types, and/or other network characteristics.
Some TCP flavors improve quality of service across TCP connections by “slow starting” the congestion window size beginning with the initial SYN/ACK cycle, and gradually increasing the congestion window size until the network capacity has been reached. Using this scheme, each flow operating across the connection follows a conservative measure in increasing the congestion window (cwnd), to fill the network pipe. For example, conventional slow start methods begin with a single packet sent and received, then two packets, four packets, etc. Thus, for some TCP flavors, it takes some finite amount of time to reach the network capacity, since it can take many round trip times (RTTs) to scale up the congestion window. In situations where peers are known (for example, across dedicated “leased line” proxy connections between middleboxes) it can be beneficial to provide systems and methods for optimizing bandwidth using characteristics inherent with these types of congestion avoidance schemes by selecting initial congestion windows according to TCP and link characteristics inherent with a particular connection.